package class8;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.PriorityQueue;

/**
 * 手写堆
 * PriorityQueue 并不会实现动态调整，比如,a,b,c已经排好序，修改b的属性，堆需要重新排序，
 * 但PriorityQueue并不会重新对其调整。
 * <p>
 * 因此需要手写堆
 */
public class Code11_HeapGreater<T> {

    private ArrayList<T> heap;
    // [a, b, c]
    // a->0
    // b->1
    // c->2
    private HashMap<T, Integer> indexMap; // 反向索引表
    private int heapSize;
    private Comparator<? super T> comp;

    public Code11_HeapGreater(Comparator<? super T> comp) {
        heap = new ArrayList<>();
        indexMap = new HashMap<>();
        heapSize = 0;
        this.comp = comp;
    }
}
